class Pipe:

    last_ID = 42

    def __init__(self, IOS):
        self.ios = IOS
        self.ID = self.last_ID
        Pipe.last_ID += 1

        self.set_caliber()
        self.set_depth()
        self.set_material()

    def set_caliber(self):
        self.caliber = self.ios.input("Диаметр:")

    def set_depth(self):
        self.depth = self.ios.input("Толщина стенки:")

    def set_material(self):
        self.material = self.ios.input("Марка стали:")

    def show(self):
        self.ios.output(self)

    def __str__(self):
        return f"Труба {self.caliber}x{self.depth} из стали марки {self.material}"

    def edit(self):
        self.values = ["Диаметр", "Толщина стенки", "Марка стали", "Назад"]
        self.actions = [self.set_caliber, self.set_depth, self.set_material]

        try:
            while True:
                choice = self.ios.choiser(self.values, self.actions)
                if choice == len(self.actions):
                    self.ios.output("Редактирование прервано")
                    return
                self.actions[choice]()

        except Exception as e:
            self.ios.output("Операция невозможна: " + e.args[0])
            return
